package com.kefu.call.vo;

import org.apache.commons.lang3.StringUtils;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.kefu.common.vo.AbstractSearchVo;
import com.kefu.call.model.CallGateway;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@ApiModel(description = "网关表")
public class CallGatewaySearchVo extends AbstractSearchVo {

    @ApiModelProperty(value = "名称")
    private String name;
    @ApiModelProperty(value = "注册的地址")
    private String realm;
    @ApiModelProperty(value = "是否注册【true或false】")
    private String register;
    @ApiModelProperty(value = "发件人字段中使用的用户名如果为空，则默认为用户名")
    private String fromuser;
    @ApiModelProperty(value = "并发数量")
    private Integer concurrent;
    @ApiModelProperty(value = "注册用户名")
    private String username;
    @ApiModelProperty(value = "密码")
    private String password;
    @ApiModelProperty(value = "验证用户名")
    private String authusername;
    @ApiModelProperty(value = "显示在from中的名称")
    private String calleridinfrom;
    @ApiModelProperty(value = "联系分机")
    private String extension;
    @ApiModelProperty(value = "SIP联系人头中发送分机")
    private String extensionincontact;
    @ApiModelProperty(value = "代理")
    private String proxy;
    @ApiModelProperty(value = "联系地址")
    private String context;
    @ApiModelProperty(value = "注册秒，默认3600")
    private String expireseconds;
    @ApiModelProperty(value = "重试注册的秒数")
    private String retryseconds;
    @ApiModelProperty(value = "发件人用户")
    private String fromdomain;
    @ApiModelProperty(value = "from字段中使用的域")
    private String registerproxy;
    @ApiModelProperty(value = "注册的代理")
    private String contactparams;
    @ApiModelProperty(value = "寄存器传输【如果已启用，则为udp，tcp或tls】")
    private String registertransport;
    @ApiModelProperty(value = "名称")
    private String memo;
    @ApiModelProperty(value = "驱动[profile]id")
    private String profileoid;
    @ApiModelProperty(value = "公司ID")
    private String company;
    @ApiModelProperty(value = "是否启用")
    private Integer enablegw;
    @ApiModelProperty(value = "归属")
    private String gs;
    @ApiModelProperty(value = "区号")
    private String qh;
    @ApiModelProperty(value = "免费通话时间[本月]")
    private String rentalminute;
    @ApiModelProperty(value = "当月套餐")
    private Integer setmealoid;
    @ApiModelProperty(value = "下次同步时间")
    private String synctime;
    @ApiModelProperty(value = "下月生效套餐")
    private Integer setmealoidU;
    @ApiModelProperty(value = "消费[本月]")
    private String consumption;

	 @Override
    public  LambdaQueryWrapper<CallGateway> lambdaQuery(){
    	LambdaQueryWrapper<CallGateway> wrapper=Wrappers.<CallGateway>lambdaQuery();
         wrapper.like(StringUtils.isNotBlank(memo), CallGateway::getMemo, memo);//名称
         wrapper.eq(StringUtils.isNotBlank(name), CallGateway::getName, name);//名称
	    wrapper.like(StringUtils.isNotBlank(realm), CallGateway::getRealm, realm);//注册的地址
	    wrapper.eq(StringUtils.isNotBlank(register), CallGateway::getRegister, register);//是否注册【true或false】
	    wrapper.like(StringUtils.isNotBlank(fromuser), CallGateway::getFromuser, fromuser);//发件人字段中使用的用户名如果为空，则默认为用户名
		wrapper.eq(concurrent!=null, CallGateway::getConcurrent, concurrent);//并发数量
	    wrapper.like(StringUtils.isNotBlank(username), CallGateway::getUsername, username);//注册用户名
	    wrapper.eq(StringUtils.isNotBlank(password), CallGateway::getPassword, password);//密码
	    wrapper.like(StringUtils.isNotBlank(authusername), CallGateway::getAuthusername, authusername);//验证用户名
	    wrapper.eq(StringUtils.isNotBlank(calleridinfrom), CallGateway::getCalleridinfrom, calleridinfrom);//显示在from中的名称
	    wrapper.eq(StringUtils.isNotBlank(extension), CallGateway::getExtension, extension);//联系分机
	    wrapper.eq(StringUtils.isNotBlank(extensionincontact), CallGateway::getExtensionincontact, extensionincontact);//SIP联系人头中发送分机
	    wrapper.eq(StringUtils.isNotBlank(proxy), CallGateway::getProxy, proxy);//代理
	    wrapper.eq(StringUtils.isNotBlank(context), CallGateway::getContext, context);//联系地址
	    wrapper.eq(StringUtils.isNotBlank(expireseconds), CallGateway::getExpireseconds, expireseconds);//注册秒，默认3600
	    wrapper.eq(StringUtils.isNotBlank(retryseconds), CallGateway::getRetryseconds, retryseconds);//重试注册的秒数
	    wrapper.eq(StringUtils.isNotBlank(fromdomain), CallGateway::getFromdomain, fromdomain);//发件人用户
	    wrapper.eq(StringUtils.isNotBlank(registerproxy), CallGateway::getRegisterproxy, registerproxy);//from字段中使用的域
	    wrapper.eq(StringUtils.isNotBlank(contactparams), CallGateway::getContactparams, contactparams);//注册的代理
	    wrapper.eq(StringUtils.isNotBlank(registertransport), CallGateway::getRegistertransport, registertransport);//寄存器传输【如果已启用，则为udp，tcp或tls】
	    wrapper.eq(StringUtils.isNotBlank(profileoid), CallGateway::getProfileoid, profileoid);//驱动[profile]id
        // 如果company不为null，但是为“”，那么就是查询company为空的
         if (company != null) {
             if (company.equals("")){
                 wrapper.isNull(CallGateway::getCompany);
                 wrapper.or();
                 wrapper.eq(CallGateway::getCompany, "");
             }else {
                    wrapper.eq(CallGateway::getCompany, company);//公司ID
             }
         }
		wrapper.eq(enablegw!=null, CallGateway::getEnablegw, enablegw);//是否启用
	    wrapper.eq(StringUtils.isNotBlank(gs), CallGateway::getGs, gs);//归属
	    wrapper.eq(StringUtils.isNotBlank(qh), CallGateway::getQh, qh);//区号
	    wrapper.eq(StringUtils.isNotBlank(rentalminute), CallGateway::getRentalminute, rentalminute);//免费通话时间[本月]
		wrapper.eq(setmealoid!=null, CallGateway::getSetmealoid, setmealoid);//当月套餐
	    wrapper.eq(StringUtils.isNotBlank(synctime), CallGateway::getSynctime, synctime);//下次同步时间
		wrapper.eq(setmealoidU!=null, CallGateway::getSetmealoidU, setmealoidU);//下月生效套餐
	    wrapper.eq(StringUtils.isNotBlank(consumption), CallGateway::getConsumption, consumption);//消费[本月]
	    wrapper.eq(CallGateway::getBshowFlag,1);
    	return wrapper;
	}
}